public class text4 {
    public static void main(String[] args) {
        String str1 = "a" + "b" + "c";
        String str2 = "abc";
        char ch = 'a';
        String str3 = ch + "b" + "c";
        System.out.println(str1);
        System.out.println(str2);
        System.out.println(str3);
        System.out.println(str1==str2);
        System.out.println(str2==str3);
    }
}

/*        字符串原理小结
扩展底层原理1:字符串存储的内存原理
● 直接赋值会复用字符串常量池中的
● new出来不会复用,而是开辟一个新的空间

扩展底层原理2 :== 号比较的到底是什么?
● 基本数据类型比较数据值
● 引用数据类型比较地址值

扩展底层原理3:字符串拼接的底层原理
● 如果没有变量参与,都是字符串直接相加,编译之后就是拼接之后的结果,会复用串池中的字符串。
● 如果有变量参与,会创建新的字符串,浪费内存。

扩展底层原理4:StringBuilder提高效率原理图
● 所有要拼接的内容都会往StringBuilder中放,不会创建很多无用的空间,节约内存

扩展底层原理5:StringBuilder源码分析
● 默认创建一个长度为16的字节数组
● 添加的内容长度小于16,直接存
● 添加的内容大于16会扩容(原来的容量*2+2)
● 如果扩容之后还不够,以实际长度为准*/